home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / tm / tmtplelm.h < prev    next >
C/C++ Source or Header  |  1990-11-06  |  5KB  |  211 lines

  1. /* 
  2.    Copyright (C) 1990 C van Reewijk, email: dutentb.uucp!reeuwijk
  3.  
  4. This file is part of GLASS.
  5.  
  6. GLASS is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GLASS is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GLASS; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* template file:      tmtplelm.ht
  21.    datastructure file: tplelm.ds
  22.    tm version:         27 (Mon Sep 10 17:30:58 METDST 1990)
  23.  */
  24.  
  25. /* ---- start of /users/reeuwijk/esprit/lib/cllu.ht ---- */
  26. /* External definitions (Version for linked list).
  27.  
  28.    template file:      /users/reeuwijk/esprit/lib/cllu.ht
  29.    datastructure file: tplelm.ds
  30.    tm version:         27 (Mon Sep 10 17:30:58 METDST 1990)
  31.  */
  32.  
  33. /* datastructures */
  34.  
  35. typedef struct str_tplelm *tplelm_list;
  36. typedef struct str_tplelm *tplelm;
  37.  
  38. #define Plain u.ue_Plain
  39. #define Foreach u.ue_Foreach
  40. #define While u.ue_While
  41. #define If u.ue_If
  42. #define Set u.ue_Set
  43. #define Append u.ue_Append
  44. #define Error u.ue_Error
  45. #define Exit u.ue_Exit
  46. #define Include u.ue_Include
  47. #define Copy u.ue_Copy
  48. #define Insert u.ue_Insert
  49.  
  50. typedef enum en_tags_tplelm {
  51.     TAGPlain, TAGForeach, TAGWhile, TAGIf, TAGSet, TAGAppend, TAGError, TAGExit, TAGInclude, TAGCopy, TAGInsert
  52. } tags_tplelm;
  53.  
  54.  
  55. typedef struct str_Plain {
  56.     int lno;
  57.     string plainline;
  58. } C_Plain;
  59.  
  60. typedef struct str_Foreach {
  61.     int lno;
  62.     string felist;
  63.     tplelm_list felines;
  64. } C_Foreach;
  65.  
  66. typedef struct str_While {
  67.     int lno;
  68.     string whilecond;
  69.     tplelm_list whilelines;
  70. } C_While;
  71.  
  72. typedef struct str_If {
  73.     int lno;
  74.     string ifcond;
  75.     tplelm_list ifthen;
  76.     tplelm_list ifelse;
  77. } C_If;
  78.  
  79. typedef struct str_Set {
  80.     int lno;
  81.     string setline;
  82. } C_Set;
  83.  
  84. typedef struct str_Append {
  85.     int lno;
  86.     string appline;
  87. } C_Append;
  88.  
  89. typedef struct str_Error {
  90.     int lno;
  91.     string errstr;
  92. } C_Error;
  93.  
  94. typedef struct str_Exit {
  95.     int lno;
  96.     string str;
  97. } C_Exit;
  98.  
  99. typedef struct str_Include {
  100.     int lno;
  101.     string fname;
  102. } C_Include;
  103.  
  104. typedef struct str_Copy {
  105.     int lno;
  106.     string fname;
  107. } C_Copy;
  108.  
  109. typedef struct str_Insert {
  110.     int lno;
  111.     string fname;
  112. } C_Insert;
  113.  
  114. /* Constructor type tplelm */
  115. struct str_tplelm {
  116.     tplelm next;
  117.     tags_tplelm tag;
  118.     union uni_tplelm {
  119.     C_Plain ue_Plain;
  120.     C_Foreach ue_Foreach;
  121.     C_While ue_While;
  122.     C_If ue_If;
  123.     C_Set ue_Set;
  124.     C_Append ue_Append;
  125.     C_Error ue_Error;
  126.     C_Exit ue_Exit;
  127.     C_Include ue_Include;
  128.     C_Copy ue_Copy;
  129.     C_Insert ue_Insert;
  130.     } u;
  131. };
  132.  
  133.  
  134. #define tplelmNIL (tplelm)0
  135. #define tplelm_listNIL (tplelm_list)0
  136.  
  137. #if defined( __STDC__ ) && __STDC__ > 0
  138. /* new_<cons> and new_<type> routines */
  139. extern tplelm new_Plain( int, string );
  140. extern tplelm new_Foreach( int, string, tplelm_list );
  141. extern tplelm new_While( int, string, tplelm_list );
  142. extern tplelm new_If( int, string, tplelm_list, tplelm_list );
  143. extern tplelm new_Set( int, string );
  144. extern tplelm new_Append( int, string );
  145. extern tplelm new_Error( int, string );
  146. extern tplelm new_Exit( int, string );
  147. extern tplelm new_Include( int, string );
  148. extern tplelm new_Copy( int, string );
  149. extern tplelm new_Insert( int, string );
  150.  
  151. /* fre_<type> routines */
  152.  
  153. /* fre_<type>_list routines */
  154.  
  155. /* rfre_<type> routines */
  156. extern void rfre_tplelm( tplelm );
  157. extern void rfre_tplelm_list( tplelm );
  158.  
  159. /* app_<type>_list routines */
  160.  
  161. /* print_<type> routines */
  162.  
  163. /* fprint_<type> routines */
  164.  
  165. /* rdup_<type> routines */
  166.  
  167. /* fscan_<type> routines */
  168.  
  169. /* cmp_<type> routines */
  170.  
  171. extern void stat_tplelm( FILE * );
  172.  
  173. #else
  174. /* new_<cons> and new_<type> routines */
  175. extern tplelm new_Plain();
  176. extern tplelm new_Foreach();
  177. extern tplelm new_While();
  178. extern tplelm new_If();
  179. extern tplelm new_Set();
  180. extern tplelm new_Append();
  181. extern tplelm new_Error();
  182. extern tplelm new_Exit();
  183. extern tplelm new_Include();
  184. extern tplelm new_Copy();
  185. extern tplelm new_Insert();
  186.  
  187. /* fre_<type> routines */
  188.  
  189. /* fre_<type>_list routines */
  190.  
  191. /* rfre_<type> routines */
  192. extern void rfre_tplelm();
  193. extern void rfre_tplelm_list();
  194.  
  195. /* app_<type>_list routines */
  196.  
  197. /* print_<type> routines */
  198.  
  199. /* fprint_<type> routines */
  200.  
  201. /* rdup_<type> routines */
  202.  
  203. /* fscan_<type> routines */
  204.  
  205. /* cmp_<type> routines */
  206.  
  207. extern void stat_tplelm();
  208.  
  209. #endif
  210. /* ---- end of /users/reeuwijk/esprit/lib/cllu.ht ---- */
  211.